Amazon GameLift Testing Toolkitを使ってプレイヤー接続テストやマッチメイキングシミュレーションを手軽に行う
こんにちは、ゲームソリューション部の入井です。
今回は、AWS公式が配布しているAmazon GameLift Testing Toolkitについて、実際に使ってみてどのようなことができるのかを確認しました。
Amazon GameLift Testing Toolkitとは
OSSとして公開されているツールで、その名の通りAmazon GameLiftのテストを行うためのものです。
aws-samples/amazon-gamelift-testing-toolkit: Amazon GameLift Testing Toolkit
Amazon GameLiftはマルチプレイヤー用のサーバをAWS上で構築するためのサービスですが、高機能な分運用にあたって管理しなければいけない要素が多く、またゲームクライアントという少し特殊なソフトウェアが関わることもありテストの実施にも手間がかかりがちです。
Amazon GameLift Testing Toolkitは、そんなGameLiftを使う上で直面しがちな課題を解決するためのサポート機能が多く盛り込まれています。
例えば、以下のような機能が用意されています。
- GameLiftの各コンポーネントの状態をWebコンソールによるGUIで分かりやすく表示
- キューやフリート設定の一部はGUIからそのまま更新可能
- 仮想プレイヤーを使ったGameLiftのマッチング~セッション参加までの動作確認
- FlexMatchのマッチメイキングのシミュレーション
- マッチングルールなどについてGUIで調整可能
導入にあたって
ツールのGitHubリポジトリをCloneしてセットアップを行うことで、ツール本体と動作確認等に使えるサンプルゲームが導入できます。ツールもサンプルゲームもAWS上に構築されるため、セットアップの際はAWS CLIとAWSアカウントが必要となります。
ツールとサンプルゲームの具体的な導入手順については、以下のドキュメントを参照してください。
Quick start - Amazon GameLift Testing Toolkit
なお、セットアップはAWS CDKによって行われ、以下のリンク先の図のようなアーキテクチャが構築されます。
AWS services - Amazon GameLift Testing Toolkit
ツールに使われるNATゲートウェイや、サンプルゲームのGameLiftフリートインスタンスや仮想プレイヤーの動作環境であるECSのFargateなどは、稼働しているだけで料金が発生するのでご注意ください。
仮想プレイヤーによるテスト実施のコストは以下のページにサービス毎に記載されています(2021年11月のus-east-1リージョン単価)
Additional resources - Amazon GameLift Testing Toolkit
実際の動作
GUIによるGameLiftの構成確認・設定変更
導入作業後にCloudfrontで発行されたURLへアクセスし、ID・パスワードによる認証が完了すると以下のようなダッシュボード画面が表示されます。(認証は導入時にCDKで作成されるこのツール専用のCognitoユーザープールを利用)
上からMatchmaking Configurations, Queues, Fleetsと区切られており、その中でツールを導入したAWSアカウントのGameLift内で実際に作成されているリソース名が表示されています。上の画像の中だと、SampleGame-MatchmakingConfig等、頭にSampleと付いているものはサンプルゲームの導入によって作成されたリソースです。
まだダッシュボードを表示しただけですが、この段階でもGameLift内でどのようなリソースが作成されているかを俯瞰することができます。
また、各リソースにマウスカーソルを合わせると、以下の画像のようにリソース間にどのような繋がりがあるかが矢印で表示されます。この例では、SampleGameQueueに届いたリクエストの割り当て先として、Sample Game OnDemand FleetとSample Game Spot Fleetの2つのフリートが設定されていることが分かります。
各リソースをダブルクリックすると、詳細な設定情報も確認可能です。以下の画像は、フリートの設定を確認したものです。インスタンスタイプ設定の他、現状のインスタンス数なども確認可能です。
フリートのメトリクスもこのダッシュボードから直接確認可能ですし、イベントログやゲームセッションの詳細な情報も確認可能です。テスト用途だけでなく、稼働中のサービスのちょっとした状況確認にも使えそうです。
各リソース一部の設定項目もこの画面から変更可能です。以下の画像は、キューの設定画面を開いています。設定の調整をしつつ各リソースの状況の変化を確認する、という使い方もできそうです。
仮想プレイヤーを使った接続テスト
AWS Fargateタスクの形で仮想プレイヤーを作成し、現在のGameLift環境へアクセスさせたらどのような結果になるかをテストすることができます。”Maximum 500 task launches per minute"と記載されているとおり、大量の仮想プレイヤーを一括で作成することが可能です。
仮想プレイヤーがどのFlexMatch設定を使用するかについては、サンプルゲームではECSのタスク定義で設定されています(厳密には、タスク定義にはマッチメイクリクエスト用のLambdaに紐付けられたAPI GatewayのURLが記載されており、タスク起動時にゲームクライアントからそのURLが呼ばれるようになっている。Lambdaのコードもリポジトリ内にあり)
仮想プレイヤーのタスクを起動すると、ダッシュボード上でアニメーションが表示され、何人のプレイヤーがどのような経路でフリートに繋がったのかが分かるようになっています。
なお、仮想プレイヤーによるテストを自前のゲームに対して行うには、ヘッドレス化したゲームクライアントとそれをFargateで実行するためのDockerイメージが必要です。
公式ドキュメントでは、サンプルゲームの設定を自前のゲーム用に書き換える手順も紹介されています。
Testing your game - Amazon GameLift Testing Toolkit
FlexMatchのマッチメイキングルールのシミュレーション
FlexMatchで作成してマッチメイキングルールについても仮想プレイヤーによるシミュレーションが可能となっています。特定のパラメータを持ったプレイヤープロファイルを自由に作成できますし、ロケーション毎のレイテンシ情報を指定したプロファイルも作成可能なので、プレイヤーの回線速度を条件にしたマッチングルールなどもテストできます。
シミュレーション結果は、最終的にできあがったマッチの情報だけでなく、マッチング途中で発生したチケット毎のイベント情報も詳細に確認可能です。
まとめ
Amazon GameLift Testing Toolkitについて、概要と簡単な機能紹介をしました。
ゲームサーバーのテストは準備に大変な手間がかかりがちですが、GameLiftを使用している場合はこのようなツールを使うことで効率化が可能となります。
今回はツール全体を簡単に触った形ですが、次回はもう少し色々なパターンでテストを試していきたいと思います。